package com.ruoyi.system.service;

import com.ruoyi.system.dto.kujiale.AlbumDataResponse;
import com.ruoyi.system.dto.kujiale.HouseTypeResponse;
import com.ruoyi.system.dto.kujiale.PageResponse;
import com.ruoyi.system.dto.kujiale.RenderingResponse;
import com.ruoyi.system.dto.kujiale.drawing.DrawingDetailData;
import com.ruoyi.system.dto.kujiale.info.ArchiveResultItem;
import com.ruoyi.system.dto.kujiale.info.LayoutLegendItem;
import com.ruoyi.system.dto.kujiale.info.RenderingImage;
import com.ruoyi.system.dto.kujiale.info.UserDesignItem;
import com.ruoyi.system.dto.kujiale.pano.RoamItem;

import java.util.List;

public interface KuJiaLeService {

    /**
     * 获取方案基础信息
     *
     * @param kujialeDesignId
     * @return
     */
    HouseTypeResponse getDesignBasic(String kujialeDesignId);


    /**
     * 获取方案的渲染图
     *
     * @param kujialeDesignId
     * @param start
     * @param num
     * @return
     */
    PageResponse<RenderingImage> renderpicList(String kujialeDesignId, int start, int num);

    /**
     * 获取全部方案的渲染图
     *
     * @param kujialeDesignId
     * @return
     */
    List<RenderingResponse> renderpicList(String kujialeDesignId);


    /**
     * 获取酷家乐发布图纸详情（最近一次发布）
     *
     * @param designId      酷家乐方案ID（必选）
     * @param level         楼层（可选，1=地上一层，-1=地下一层，null=默认地上一层）
     * @param orderId       审核方案ID（可选，null=不传递）
     * @param publishSource 发布来源（可选，0=施工图环境，1=新版户型图环境，默认0）
     * @return 图纸详情数据体
     */
    DrawingDetailData getDrawingDetail(String designId, Integer level, String orderId, Integer publishSource);


    /**
     * 根据方案ID获取全屋漫游列表
     *
     * @param appuid   用户ID（必选，API要求）
     * @param designId 方案ID（必选，与方案基础信息接口一致）
     * @return 漫游列表（含3D漫游、智能漫游）
     */
    List<RoamItem> getRoamList(String appuid, String designId);


    /**
     * 获取用户方案列表（分页）
     *
     * @param appuid  用户ID（必选，从当前登录用户获取）
     * @param start   偏移量（从0开始）
     * @param num     每页数量（最大50）
     * @param status  方案阶段（0=户型，1=装修，null=全部）
     * @param sort    排序（0=创建时间倒排，1=修改时间倒排，null=默认0）
     * @param keyword 方案名称模糊查询（null=不查询）
     * @param time    增量时间戳（查询该时间后修改的方案，null=不限制）
     * @return 分页方案列表
     */
    PageResponse<UserDesignItem> getUserDesignList(String appuid, int start, int num,
                                                   Integer status, Integer sort,
                                                   String keyword, Long time);


    /**
     * 根据方案ID和图册类型，分页查询图册信息（调用三方接口）
     *
     * @param appuid      第三方用户ID（当前登录用户绑定的酷家乐ID）
     * @param designId    方案ID（三方接口的design_id）
     * @param sceneTypeId 图册类型（0-普通图 1-生长动画等，必填）
     * @param lastItemId  上页最后一个ID（分页用，可选）
     * @param num         每页数量（必填）
     * @return 图册信息外层响应（包含错误码、业务数据）
     */
    AlbumDataResponse getAlbumData(String appuid, String designId, Integer sceneTypeId, String lastItemId, Integer num);

    /**
     * 获取存档列表（调用三方接口）
     *
     * @param appuid   第三方用户ID（当前登录用户绑定的酷家乐ID）
     * @param designId 方案ID（必选，三方接口的design_id）
     * @param level    楼层（可选，1=地上一层，-1=地下一层，默认1）
     * @param orderId  审核方案ID（可选，无审核时不传）
     * @param start    起始游标（可选，分页用，默认0）
     * @param num      分页数目（可选，至多10条，num=1返回最新数据）
     * @return 存档列表外层响应（含错误码、业务数据）
     */
    ArchiveResultItem getArchiveList(String appuid, String designId, Integer level, String orderId, Integer start, Integer num);


    /**
     * 获取方案平面布置图片列表（调用三方接口）
     *
     * @param planId 酷家乐方案planId（三方接口必填参数）
     * @return 平面布置图片外层响应（含错误码、业务数据）
     */
    List<LayoutLegendItem> getLayoutLegendImage(String planId);
}
